package dao.mysql;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import util.DataBaseConnection;

import bean.Orden_de_Reparacion;
import dao.Entidad;
public class MySQLOrden_de_Reparacion implements Entidad<Orden_de_Reparacion>{

	@Override
	public Orden_de_Reparacion insert(Orden_de_Reparacion t) {
		Connection con=null;
		try {
			con=DataBaseConnection.openConnection();
			String sql="INSERT INTO orden_de_reparacion(id_orden_repara,fecha,hora,monto,cantidad";
			sql = sql + ",id_producto,id_documento_pago) VALUES(?,?,?,?,?,?,?)";
			PreparedStatement ps=con.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
			ps.setInt(1, t.getId_orden_repara());
			ps.setObject(2, t.getFecha());
			ps.setObject(3, t.getHora());
			ps.setDouble(4, t.getMonto());
			ps.setDouble(5, t.getCantidad());
			ps.setInt(6, t.getId_producto());
			ps.setInt(7, t.getId_documento_pago());
			ps.executeUpdate();
			ResultSet rs=ps.getGeneratedKeys();
			if(rs.next()){
				int id=rs.getInt(1);
				t.setId_orden_repara(id);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return t;
	}

	@Override
	public int update(Orden_de_Reparacion t) {
		Connection con=null;
		int rows = -1;
		try {
			con=DataBaseConnection.openConnection();
			String sql="UPDATE orden_de_reparacion set fecha = ?, hora=?,monto=?,";
			sql = sql +	"cantidad=?,id_producto=?,id_documento_pago=? WHERE id_orden_repara = ?";
			PreparedStatement ps=con.prepareStatement(sql);
			ps.setObject(1, t.getFecha());
			ps.setObject(2, t.getHora());
			ps.setDouble(3, t.getMonto());
			ps.setDouble(4, t.getCantidad());
			ps.setInt(5, t.getId_producto());
			ps.setInt(6, t.getId_documento_pago());
			ps.setInt(7,t.getId_orden_repara());
			rows =ps.executeUpdate();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return rows;
	}

	@Override
	public int delete(Orden_de_Reparacion t) {
		Connection con=null;
		int rows=-1;
		try {
			con=DataBaseConnection.openConnection();
			String sql="DELETE FROM orden_de_reparacion where id_orden_repara =?";
			PreparedStatement ps=con.prepareStatement(sql);
			ps.setInt(1, t.getId_orden_repara());
			rows=ps.executeUpdate();
			System.out.println(rows);
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return rows;
	}

	@Override
	public Orden_de_Reparacion findById(Orden_de_Reparacion t) {
		// TODO Auto-generated method stub
		Connection con=null;
		try {
			con=DataBaseConnection.openConnection();
			String sql="SELECT * from orden_de_reparacion where id_orden_repara = ?";
			PreparedStatement ps=con.prepareStatement(sql);
			ps.setInt(1, t.getId_orden_repara());
			ResultSet rs=ps.executeQuery();
			while(rs.next()){
				t.setId_orden_repara(rs.getInt("id_orden_repara"));
				t.setFecha(rs.getDate("fecha"));
				t.setHora(rs.getDate("hora"));
				t.setMonto(rs.getDouble("monto"));
				t.setCantidad(rs.getDouble("cantidad"));
				t.setId_producto(rs.getInt("id_producto"));
				t.setId_documento_pago(rs.getInt("id_documento_pago"));
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return t;
	}

	@Override
	public List<Orden_de_Reparacion> listAll() {
		// TODO Auto-generated method stub
		List<Orden_de_Reparacion> documentos = new ArrayList<Orden_de_Reparacion>();
		Connection con=null;
		try {
			con=DataBaseConnection.openConnection();
			String sql="SELECT * from orden_de_reparacion";
			Statement st=con.createStatement();
			ResultSet rs=st.executeQuery(sql);
			while(rs.next()){
				Orden_de_Reparacion t = new Orden_de_Reparacion();
				t.setId_orden_repara(rs.getInt("id_orden_repara"));
				t.setFecha(rs.getDate("fecha"));
				t.setHora(rs.getDate("hora"));
				t.setMonto(rs.getDouble("monto"));
				t.setCantidad(rs.getDouble("cantidad"));
				t.setId_producto(rs.getInt("id_producto"));
				t.setId_documento_pago(rs.getInt("id_documento_pago"));
				documentos.add(t);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return documentos;
	}

	@Override
	public List<Orden_de_Reparacion> listAllCustom(Object... objects) {
		// TODO Auto-generated method stub
		return null;
	}

}
